﻿Imports Biz
Imports DAL


''' <summary>
''' Clase de gestión de lógica de negocio para la entidad Bitacora
''' </summary>
''' <remarks></remarks>
Public Class GestorBitacora

    Private Shared _instance As GestorBitacora
    Private Shared _semaforo As New Object

    Private _DALBitacora As DALBitacora


    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para consultar la lista de Bitacora
    ''' </summary>
    ''' <returns>Colección de objetos de tipo cBitacora_Usuario</returns>
    ''' <remarks></remarks>
    Public Function Consultar(Periodo As Utils.Enumeradores.ConsultaBitacora) As Collection
        Return _DALBitacora.SelectxPeriodo(Periodo)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para consultar la lista de Bitacora para un usuario
    ''' </summary>
    ''' <param name="Usu_Legajo">Identificación de Usuario</param>
    ''' <returns>Colección de objetios de tipo cBitacora</returns>
    ''' <remarks></remarks>
    Public Function ConsultarPorUsuario(Usu_Legajo As Int16) As Collection
        Return _DALBitacora.SelectPorUsuario(Usu_Legajo)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para registrar un evento en la Bitacora del sistema
    ''' </summary>
    ''' <param name="oBitacora">Objeto cBitacora_Usuario con los datos del evento</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Loguear(ByVal oBitacora As cBitacora_Usuario) As Boolean
        Return _DALBitacora.Insert(oBitacora)
    End Function

    ''' <summary>
    ''' Método estático Instance para exponer una única instancia de la clase GestsorBitacora
    ''' </summary>
    ''' <returns>Unica instancia de la clase GestsorBitacora</returns>
    ''' <remarks></remarks>
    Public Shared Function Instance() As GestorBitacora
        If _instance Is Nothing Then
            SyncLock (_semaforo)
                If _instance Is Nothing Then
                    _instance = New GestorBitacora
                End If
            End SyncLock
        End If

        Return _instance
    End Function

    Private Sub New()
        _DALBitacora = DALBitacora.Instance
    End Sub

End Class
